﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DTO;
using BUS;
namespace QuanLyRapChieuPhim
{
    public partial class frmDangKy_SuatChieu : Form
    {
        //tạo một hàm delegate thể hiện việc giá trị được nhập vào từ đâu khi form tìm kiếm đưa giá trị sang form dangkysuatchieu
        public void ThongTin (Phim P)
        {
            txtMaPhim.Text = P.MaPhim;
            txtTenPhim.Text = P.TenPhim;
            txtDinhDangPhim.Text = P.MaDinhDang;
            txtThoiLuongPhim.Text = P.ThoiLuongPhim;
        }

        public frmDangKy_SuatChieu()
        {
            InitializeComponent();
        }
        private void LoadCombobox_Phong()
        {
            //load lên combobox phong
            DataTable dsPhong = new DataTable();
            int MaDinhDang = Convert.ToInt32(txtDinhDangPhim.Text);
            dsPhong = PhongChieuBUS.Load_DSPhong_TheoDinhDangPhim(MaDinhDang);
            cbPhongChieu.DataSource = dsPhong;
            cbPhongChieu.DisplayMember = "TenPhong";
            cbPhongChieu.ValueMember = "MaPhongChieu";
        }
        //LOAD DS RẠP LÊN COMBOBOX RẠP
        private void LoadCombobox_Rap()
        {
            List<RapChieu> dsRap = new List<RapChieu>();
            dsRap = RapChieuBUS.LayDSRapChieu();
            cbRapChieu.DataSource = dsRap;
            cbRapChieu.DisplayMember = "TenRap";
            cbRapChieu.ValueMember = "MaRap";
        }
        private void LoadCombobox_SuatChieu()
        {
            DataTable dsGioBatDau = new DataTable();
            dsGioBatDau = SuatChieuBUS.Load_GioBatDau_SuatChieu();
            cbGioBatDau.DataSource = dsGioBatDau;
            cbGioBatDau.DisplayMember = "GioBatDau";
            cbGioBatDau.ValueMember = "MaSuatChieu";
        }
        private void frmDangKy_SuatChieu_Load(object sender, EventArgs e)
        {
            //LoadCombobox();
            LoadCombobox_Rap();
            LoadCombobox_SuatChieu();
            
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            frmTimKiemPhim frm = new frmTimKiemPhim();
            this.Hide();
            frm.ShowDialog();
            
        }
        //nếu nhân viên nhớ mã phim thì ko cần tìm kiếm, chỉ cần nhập mã mọi thông tin cần thiết của phim sẽ được hiện lên
        private void txtMaPhim_Leave(object sender, EventArgs e)
        {
            if (txtMaPhim.Text.Length == 0)
            {
                return;
            }
            //kiểm tra mã có tồn tại không mới lấy thông tin phim theo mã
            int KQ = PhimBUS.KiemTra_MaPhim(txtMaPhim.Text);
            if (KQ == 0)
            {
                //lấy tên phim, định dạng phim và thời lượng phim theo mã phim
                List<Phim> dsThongTinPhim = new List<Phim>();
                dsThongTinPhim = PhimBUS.Lay_ThongTinPhim_TheoMaPhim(txtMaPhim.Text);
                txtTenPhim.Text = dsThongTinPhim[0].TenPhim.ToString();
                txtDinhDangPhim.Text = dsThongTinPhim[0].MaDinhDang.ToString();
                txtThoiLuongPhim.Text = dsThongTinPhim[0].ThoiLuongPhim.ToString();

                //LOAD PHÒNG THEO ĐÚNG ĐỊNH DẠNG PHIM ĐỂ LỰA CHỌN CHÍNH XÁC
                LoadCombobox_Phong();
            }
            else
                MessageBox.Show("Mã phim không đúng định dạng hoặc không tồn tại.Vui lòng kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void cbGioBatDau_SelectedIndexChanged(object sender, EventArgs e)
        {
            //KHI NHẤN CHỌN GIỜ BẮT ĐẦU, GIỜ KẾT THÚC SẼ TỰ ĐỘNG HIỆN RA
            int GIOBD = int.Parse(cbGioBatDau.Text);
            int GIOKT = SuatChieuBUS.LAY_GIOKT_SUATCHIEU(GIOBD);
            txtGioKetThuc.Text = GIOKT.ToString();
            
        }

        BindingList<DangKySuatChieu> dsDKSuatChieu = new BindingList<DangKySuatChieu>();

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (txtMaPhim.Text.Length == 0)
            {
                MessageBox.Show("Vui lòng chọn thông tin đầy đủ trước khi đăng ký", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
            //sau khi nhấn nút thêm là dữ liệu được đưa xuống database và load lên datagridview. Hiện thông báo thêm thành công
            //tạo đối tượng
            DangKySuatChieu DKSC = new DangKySuatChieu();
            DKSC.MaPhim = txtMaPhim.Text;
            DKSC.MaPhongChieu = cbPhongChieu.SelectedValue.ToString();
            DKSC.MaRap = cbRapChieu.SelectedValue.ToString();
            DKSC.MaSuatChieu = cbGioBatDau.SelectedValue.ToString();
            DKSC.NgayChieu = dtpicNgayChieu.Value;
            int KT = DangKySuatChieuBUS.KiemTra_DangKy(DKSC);
            if (KT == 0)
            {

                //kiểm tra ngày chiếu có nhỏ hơn hoặc bằng ngày hiện tại không
                string ngaychieu = DKSC.NgayChieu.ToString("yyyy-MM-dd");
                string ngayhientai = DateTime.Now.ToString("yyyy-MM-dd");
                if((ngaychieu.CompareTo(ngayhientai) < 0) || (ngaychieu.CompareTo(ngayhientai)==0))
                {
                    MessageBox.Show("Ngày chiếu phải thuộc về tương lai so với ngày hiện tại","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                    return;
                }
                dsDKSuatChieu.Add(DKSC);
                int DK = DangKySuatChieuBUS.DangKySuatChieu(DKSC);
                if (DK == 0)
                {
                    dgvDangKySuatChieu.DataSource = dsDKSuatChieu;
                    MessageBox.Show("Đăng ký thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                    MessageBox.Show("Đăng ký không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
                MessageBox.Show("Thông tin đã được đăng ký. Vui lòng chọn thông tin khác", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}
